iT邦幫忙

2024 iThome 鐵人賽

DAY 18
0
AI/ ML & Data

我的深度學習-從0開始實作物件偵測系列 第 18

【Day 18】實戰演練 - 模型評估!

  • 分享至 

  • xImage
  •  

一、前言

在前天的文章中,已經初步訓練好了模型,接下來將進行檢視訓練的準確度以及測試模型是否能正確地抓到車牌的框線。

二、提取訓練結果

  1. 首先先叫出訓練完產生的result.csv檔,並利用matplotlib繪製圖形的準確率。
import os
import pandas as pd
import matplotlib.pyplot as plt
from glob import glob

# 找尋最新的訓練檔
log_dir = max(glob(r'c:/Users/sywu0/runs/detect/train'), key = the_number_in_the_string)
# 從csv中讀取訓練的結果
results = pd.read_csv(os.path.join(log_dir, 'results.csv'))
results.columns = results.columns.str.strip() # 刪除多餘的空格

# 提取epochs和accuracy的指標
epochs = results.index + 1 
mAP_0_5 = results['metrics/mAP50(B)'] # IoU的平均精度是0.5
mAP_0_5_0_95 = results['metrics/mAP50-95(B)'] # IoU的平均精度是0.5:0.95
#繪製epochs的accuracy
plt.figure(figsize=(10, 5))
plt.plot(epochs, mAP_0_5, label = 'mAP@0.5')
plt.plot(epochs, mAP_0_5_0_95, label = 'mAP@0.5:0.95')
plt.xlabel('Epochs')
plt.ylabel('Accuracy')
plt.title('Accuracy Over Epochs')
plt.legend()
plt.grid(True)
plt.show()

根據上面的程式碼,可得出如下圖的結果。
image

三、儲存結果

最後再將模型給儲存下來。

model.save('best_license_plate_model.pt')

這樣就完成了模型的提取的部分,接著進行評估的部分。

四、模型的評估

在上面的圖片中,可以看到先前提過的mAP和mean Average Precision,用兩條曲線分別表示mAP@0.5mAP@0.5:0.95,以下分別說明曲線的準確率。

  • mAP@0.5(藍線)是指當IOU的閥值為0.5時的平均準確率,可以看到在圖片前期波動較大,但經過20個epoch後穩定在0.85左右,代表模型的性能還不錯。
  • mAP@0.5:0.95(橙線)表示隨著IOU閥值逐步提高(從0.5到0.95)時的平均準確率。這條曲線相對較平穩,最終在0.5左右。代表模型在更嚴格的準確率要求下的性能表現較低。

綜合來說,模型的表現尚可,由於樣本數低的關係,訓練出來的結果mAP值以嚴格的判定條件下還有改進的空間,那下一篇將會進行模型的測試,我們下篇見。

image


上一篇
【Day 17】實戰演練 - 問題與解決
下一篇
【Day 19】實戰演練 - 測試模型!
系列文
我的深度學習-從0開始實作物件偵測30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言